/**
 * 从localStorage获取数据
 * @param {string} key - 存储键名
 * @returns {any} 存储的值
 */
export function getLocalStorage(key) {
  if (!key || typeof key !== 'string') {
    return null;
  }
  
  try {
    const value = localStorage.getItem(key);
    if (value === null) {
      return null;
    }
    // 尝试解析JSON
    return JSON.parse(value);
  } catch (e) {
    // 如果解析失败，直接返回原始值
    return localStorage.getItem(key);
  }
}

/**
 * 向localStorage存储数据
 * @param {string} key - 存储键名
 * @param {any} value - 存储的值
 * @returns {boolean} 是否存储成功
 */
export function setLocalStorage(key, value) {
  if (!key || typeof key !== 'string') {
    return false;
  }
  
  try {
    // 转换为JSON字符串存储
    localStorage.setItem(key, JSON.stringify(value));
    return true;
  } catch (e) {
    return false;
  }
}

/**
 * 从localStorage删除数据
 * @param {string} key - 存储键名
 */
export function removeLocalStorage(key) {
  if (key && typeof key === 'string') {
    localStorage.removeItem(key);
  }
}

/**
 * 从sessionStorage获取数据
 * @param {string} key - 存储键名
 * @returns {any} 存储的值
 */
export function getSessionStorage(key) {
  if (!key || typeof key !== 'string') {
    return null;
  }
  
  try {
    const value = sessionStorage.getItem(key);
    if (value === null) {
      return null;
    }
    // 尝试解析JSON
    return JSON.parse(value);
  } catch (e) {
    // 如果解析失败，直接返回原始值
    return sessionStorage.getItem(key);
  }
}

/**
 * 向sessionStorage存储数据
 * @param {string} key - 存储键名
 * @param {any} value - 存储的值
 * @returns {boolean} 是否存储成功
 */
export function setSessionStorage(key, value) {
  if (!key || typeof key !== 'string') {
    return false;
  }
  
  try {
    // 转换为JSON字符串存储
    sessionStorage.setItem(key, JSON.stringify(value));
    return true;
  } catch (e) {
    return false;
  }
}

/**
 * 从sessionStorage删除数据
 * @param {string} key - 存储键名
 */
export function removeSessionStorage(key) {
  if (key && typeof key === 'string') {
    sessionStorage.removeItem(key);
  }
}
